<?php
/*
Plugin Name: exWpLocalizer
Plugin URI: http://code.google.com/p/exwplocalizer/
Description: necessario per astrarre dal tema le chiamate alle funzioni di localizzazione del plugin qtranslate (può essere esteso per usare anche altri plugin di localizzazione); per l'installazione va copiata la cartella lang del plugin all'interno del tema all'interno della cartella lang si trovano le voci di vocabolario da tradurre utilizzate dal tema
Version: 1.1.0
Author: e-xtrategy
Author URI: http://www.e-xtrategy.net
Tags: 
*/

class exWpLocalizer {
	/**
	 * @var exWpLocalizer
	 */
	private static $_instance = null;
	/**
	 * @var array
	 */
	private $_aLang = array();
	
	/**
	 * @var boolean
	 */
	private $_qtrans = false;
	
	
	private function __construct() {
		if (function_exists(qtrans_getLanguage)) {
			$this->_qtrans = true;
		}
		if ($this->_qtrans) {
			$this->setLang(qtrans_getLanguage());
		}
	}
	
	/**
	 * @return exWpLocalizer
	 */
	public static function getInstance()
	{
		if(self::$_instance == null)
		{   
			$c = __CLASS__;
			self::$_instance = new $c;
		}
		return self::$_instance;
	}
	
	/**
	 * @return string
	 */
	public function getLang() {
		if ($this->_qtrans) {
			return qtrans_getLanguage();
		} else {
			return 'it';
		}	
	}
	
	/**
	 * 
	 * @param string $strLang
	 * @return exWpLocalizer
	 */
	public function setLang($strLang){
		if (qtrans_isEnabled($strLang)) {
			$strPath = get_theme_root().'/'.get_template().'/lang/'.$strLang.'.inc.php';
			if (file_exists($strPath)) {
				include($strPath);
				$this->_aLang = $lang;
				return $this;
			} else {
				exit('Non esiste un vocabolario per la lingua selezionata');
			}	
		} else {
			exit('La lingua specificata non è stata abilitata');
		}
	}
	
	public function availableLang() {
		$aAvilableLang =  array();
		if ($this->_qtrans) {
			foreach (qtrans_getSortedLanguages() as $variable) {
				$aAvilableLang[$variable] = qtrans_getLanguageName($variable);
			}
		}	
		return $aAvilableLang;
	}
	
	public function otherLang($strLang='') {
		$strLang = ($strLang=='')?$this->getLang():$strLang;
		$aOtherLang = $this->availableLang();
		unset($aOtherLang[$strLang]);
		return $aOtherLang;
	}
	
	public function traduci($testo) {
		if  (($this->_qtrans) && (isset($this->_aLang[$testo]))) {
			return $this->_aLang[$testo];
		} else {
			return $testo;
		}
	}
	
	public function traduciDbField($testo) {
		if ($this->_qtrans) {
			return __($testo);
		} else {
			return $testo;
		}	
	}
	
	public static function _($testo) {
		return self::getInstance()->traduci($testo);
	}
	
	public static function __($testo) {
		return self::getInstance()->traduciDbField($testo);
	}
	
}